package com.example.design.b.composite.demo;

/**
 * 组合模式示例
 */
public class ShoppingDemo {
    public static void main(String[] args) {
        // 逛超市, 推了个购物车
        Bag cart = new Bag("购物车");

        // 买茶叶
        Item tea = new Item("茶叶", 3, 20);
        cart.add(tea);

        // 买杯子
        Item cup = new Item("马克杯", 2, 13);
        cart.add(cup);

        // 走到了水果区, 拿了个小号白色塑料袋
        Bag smallWhiteBag = new Bag("白色小号袋");

        // 称了2斤半橘子
        Item orange = new Item("橘子", 2.5F, 6);
        // 装进了小号白色塑料袋
        smallWhiteBag.add(orange);
        // 小号白色塑料袋扔进购物车
        cart.add(smallWhiteBag);

        // 拿了个小号红色塑料袋
        Bag smallRedBag = new Bag("红色小号袋");
        // 称了2斤苹果
        Item apple = new Item("苹果", 2, 4);
        // 装进了小号红色塑料袋
        smallRedBag.add(apple);
        // 小号红色塑料袋扔进购物车
        cart.add(smallRedBag);

        // 走到了生活用品区, 拿了个大号白色塑料袋
        Bag bigWhiteBag = new Bag("白色大号袋");
        // 买了个拖把
        Item mop = new Item("拖把", 1, 29.9);
        // 拖把装进大号白色塑料袋
        bigWhiteBag.add(mop);
        // 大号白色塑料袋扔进购物车
        cart.add(bigWhiteBag);

        // 要了个大塑料袋装橘子和苹果准备结账回家
        Bag bigBlackBag = new Bag("黑色大号袋");
        // 从购物车中取出
        cart.remove(smallWhiteBag);
        cart.remove(smallRedBag);
        // 放进黑色大号购物袋
        bigBlackBag.add(smallWhiteBag);
        bigBlackBag.add(smallRedBag);
        // 黑色大号购物袋放进购物车
        cart.add(bigBlackBag);

        /* ============================================================================ */
        System.out.println("商品总价: " + cart.cal() + "元");

        cart.show();
    }
}
